package edu.uoc.tdp.pac4.dao;

import edu.uoc.tdp.pac4.beans.Usuario;
import edu.uoc.tdp.pac4.util.LanguageUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * Gestor de subsistema de Conexión
 * 
 * @author eSupport Netbeans
 */
public class GestorConexion extends GestorDisco
{
   private Connection conn = null;
   private LanguageUtils txt = null;
   
   /**
    * Constructor de la clase.
    */
   public GestorConexion(Connection conn) 
   {
      this.conn = conn;
   }
   
   //===========================================
   // Propiedades
   //===========================================
   
   /**
    * Devuelve la conexión a base de datos.
    */
   @Override
   public Connection getConnection() 
   {
      return conn;
   }
   
   //===========================================
   // Métodos
   //===========================================
   
    /**
    * Valida la conexión de un usuario al sistema
    * 
    * @return el rol del usuario. Si está vacío se deniega el acceso.
    * 
    * @throws SQLException
    * @throws Exception 
    */
   public Usuario validaUsuario(String login, String password) throws SQLException, Exception
   {
      Usuario usuario = new Usuario();
      String sql;
      String rol = "";
      
      sql = "SELECT usuario.id as idUsuario, login, nombre, apellidos, activo, rol.descripcion, rol.id as idrol " +
            "FROM   usuario, rol " +            
            "WHERE  lower(login)  = '" + login.trim().toLowerCase() + "' AND " +
            "       pwd           = md5('" + password + "') AND " +
            "       usuario.idrol = rol.id AND " +
            "       activo        = '" + 1 + "'";     
      try
      {
         Statement statement = getConnection().createStatement();
         ResultSet rs = statement.executeQuery(sql);
         
         while(rs.next())
         {
            usuario.setId(rs.getInt("idUsuario"));
            usuario.setLogin(rs.getString("login"));
            usuario.setNombre(rs.getString("nombre"));
            usuario.setApellidos(rs.getString("apellidos"));
            usuario.setIdRol(rs.getInt("idrol"));
            usuario.setDescRol(rs.getString("descripcion"));
         }
      }
      catch (SQLException ex) 
      {
         throw ex;
      } 
      catch (Exception ex) 
      {
         throw ex;
      }
            
      return usuario;
   }
}
